import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style// to  要去那个页面
import getPageTitle from './utils/get-page-title'

// to:要去那个页面
// from  从哪里来
// next 它是一个函数
//    如果直接放行 next()
//    如果要跳到其他页 next(其他页)
//  页面在进行跳转之前一定会经过这里
router.beforeEach(async(to, from, next) => {
//   console.log(to, from)
  NProgress.start()

  // 动态设置网页的标题
  //   document.title = `人力资源系统-${to.meta.title}`
  document.title = getPageTitle(to.meta.title)

  // 判断是否有token
  const whileList = ['/login', '/404']
  const token = store.state.user.token
  if (token) {
    if (to.path === '/login') {
      next('/')
      NProgress.done() // 关闭进度条
    } else {
      // 1.触发actions中的函数，获取用户信息，存储在vuex中

      // 判断vuex中是否存储过用户信息，如果已经存储，就不需要在获取了
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/getUserInfo')
      }
      next()
    }
  } else {
    if (whileList.includes(to.path)) {
      next()
    } else {
      next('/login')
      NProgress.done() // 关闭进度条
    }
  }
})

// 如何关闭进度条 NProgress.done() // 什么时候关闭
// 怎么确认页面跳转完毕 router.afterEach()
router.afterEach(() => {
  NProgress.done() // 关闭进度条
})
